Skip to content

feature(DT-3929): Timeline - Collapsible Idle Time#3569

Draft
tegan-temporal wants to merge 2 commits into
SharedHistoryBufferfrom
DT-3929-compress-collapse-long-events
Draft

feature(DT-3929): Timeline - Collapsible Idle Time#3569
tegan-temporal wants to merge 2 commits into
SharedHistoryBufferfrom
DT-3929-compress-collapse-long-events

Conversation

@tegan-temporal

@tegan-temporal tegan-temporal commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Description & motivation 💭

Add ability to collapse / expand idle time

Screenshots (if applicable) 📸

CleanShot.2026-06-24.at.14.37.09.mp4

Design Considerations 🎨

Testing 🧪

How was this tested 👻

  • Manual testing
  • E2E tests added
  • Unit tests added

Steps for others to test: 🚶🏽‍♂️🚶🏽‍♀️

Checklists

Draft Checklist

Merge Checklist

Issue(s) closed DT-3929

Docs

Any docs updates needed?

@tegan-temporal tegan-temporal self-assigned this Jun 17, 2026
@vercel

vercel Bot commented Jun 17, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
holocene Ready Ready Preview, Comment Jun 25, 2026 11:08pm

Request Review

@temporal-cicd

temporal-cicd Bot commented Jun 24, 2026

Copy link
Copy Markdown
Contributor
Warnings
⚠️

📊 Strict Mode: 7 errors in 2 files (0.8% of 869 total)

src/lib/holocene/tooltip.svelte (1)
  • L63:13: Type 'null' is not assignable to type '"target" | "filter" | "search" | "link" | "success" | "error" | "action" | "activity" | "add-square" | "add" | "apple" | "archives" | "arrow-down" | "arrow-left" | "arrow-up" | ... 144 more ... | "xmark-square"'.
src/lib/components/lines-and-dots/end-time-interval.svelte (6)
  • L25:6: Variable 'endTimeInterval' implicitly has type 'any' in some locations where its type cannot be determined.
  • L29:20: Variable 'endTimeInterval' implicitly has an 'any' type.
  • L34:29: Parameter 'pauseLiveUpdates' implicitly has an 'any' type.
  • L36:20: Variable 'endTimeInterval' implicitly has an 'any' type.
  • L38:16: Variable 'endTimeInterval' implicitly has an 'any' type.
  • L49:18: Variable 'endTimeInterval' implicitly has an 'any' type.

Generated by 🚫 dangerJS against f39406d

Squash-rebase of the collapse-idle-time feature onto SharedHistoryBuffer's
timeline performance rewrite (window virtualization, grouped-event-buffer,
sticky-canvas scroll compositing, imperative panel-shift transforms).

The collapse feature is layered onto SHB's architecture in the
timeline-graph/ directory layout:
- X-axis time->pixel projection flows through the collapse-aware
  TimelineScale/Viewport (projectX); SHB's Y-axis row virtualization and
  imperative active-panel transform are preserved. The two axes are
  orthogonal so they compose cleanly.
- validTimeToDate routes its parse through SHB's cachedParseJSON, keeping the
  session parse cache inside the feature's abstraction.

Reconciliations where the two approaches were mutually exclusive:
- Dropped the per-row position cache: it keyed on (width,y,len) and would
  serve stale points when collapse toggles; its parseJSON cost is now
  covered by cachedParseJSON.
- Kept SHB's CSS grid background and label-only axis (the axis ticks are no
  longer collapse-aware; collapsed regions are still marked by the overlay).
- group-details-row uses SHB's ResizeObserver/onHeight panel-height path
  instead of the $activeGroupHeight store.

Includes one fix to a pre-existing SHB type error in
svg/timeline-graph-row-rendering.test.ts (literal-narrowed comparison).
Timeline segments are $derived from the streaming event list, so applying
the default collapse on init (mid-stream) made the idle-time zigzag appear
and shift as partial-data gaps resolved during initial load.

- Apply collapseAllSegmentsByDefault() from an $effect gated on
  historyCtx.fetchComplete instead of in onTimelineInit, so the default
  collapse runs once against the final, stable segment set.
- Hide TimelineCollapsedLayer while loading so no zigzag/handles render on
  unstable segments.
- Disable the show/hide idle-time toggle until fetchComplete and show the
  Button's loading spinner in place of its icon while the history streams in.
@tegan-temporal tegan-temporal force-pushed the DT-3929-compress-collapse-long-events branch from f39406d to 6f0ffa8 Compare June 25, 2026 23:07
@tegan-temporal tegan-temporal marked this pull request as draft June 25, 2026 23:07
@tegan-temporal tegan-temporal changed the base branch from main to SharedHistoryBuffer June 25, 2026 23:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant